Использование ebuild
Обновлено 24 сентября 2019
emerge и ebuild
Программа ebuild
— это низкоуровневый интерфейс системы Portage. С ее помощью можно выполнять определенные действия над заданными сборками ebuild. Например, вы можете самостоятельно выполнить отдельные этапы установки.
Программа ebuild предназначена в основном для разработчиков, поэтому более подробная информация находится в настольной книге разработчика. Однако, мы расскажем, какие экземпляры ebuild вызываются системой Portage на разных этапах установки, и как выполнить пост-конфигурационные шаги, которые допускаются некоторыми пакетами.
Ручная установка программ
Извлечение исходных кодов и проверка контрольных сумм
Каждый раз, когда вы вызываете ebuild
для какого-то ebuild-файла, проверяется совпадение контрольной суммы всех задействованных файлов с указанной в файлах Manifest или files/digest-<имя>-<версия>. Проверка выполняется после загрузки исходных кодов.
Чтобы загрузить исходные коды с помощью ebuild
, выполните:
ebuild путь/к/файлу-ebuild fetch
Если контрольная сумма md5 сборочного файла не совпадает с той, что указана в файле Manifest, или же один из загруженных файлов не совпадает с описанием в файле files/digest<пакет>, вы получите сообщение об ошибке, похожее на такое:
!!! File is corrupt or incomplete. (Digests do not match) >>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee >>> your file's digest: f10392b7c0b2bbc463ad09642606a7d6 (!!! Файл поврежден или усечен. (Контрольные суммы не совпадают) )
На следующей строке указывается проблемный файл.
Если вы абсолютно уверены, что загруженные исходные коды и сам сборочный файл ebuild именно те, что вам нужны, вы можете пересоздать файлы Manifest и digest-<пакетe>, используя фукцию digest программы ebuild
. Пример создания новых файлов Manifest и digest:
ebuild путь/к/файлу-ebuild digest
Распаковка исходных кодов
Чтобы рапаковать исходные коды в @/var/tmp/portage@ (или любой другой каталог, указанный в make_conf), запустите функцию unpack программы <[HTML_REMOVED]>. Пример распаковки исходных кодов:
ebuild путь/к/файлу-ebuild unpack}
Эта команда выполнит функцию src_unpack() программы ebuild (которая по умолчанию просто выполняет распаковку, если функция src_unpack() не определена). Все необходимые заплатки накладываются также на этом этапе.
Компиляция исходных кодов
Следующий шаг в процессе установки — компиляция исходных кодов. Для этого выполняется функция src_compile() вашего сборочного файла. Если нужно, заодно выполняется конфигурация. Пример компиляции исходных кодов:
ebuild путь/к/файлу-ebuild compile
Если вы хотите изменить инструкции компиляции, советуем отредактировать функцию src_compile(). Но вы можете и "обмануть" Portage, заставив ее поверить, что программа ebuild
уже завершила компиляцию. Запустите нужные команды самостоятельно и создайте пустой файл .compile в рабочем каталоге:
touch .compiled
Установка файлов во временное место
Следующий шаг — установка всех необходимых файлов во временный каталог. В него помещаются все файлы, подлежащие включению в рабочую файловую систему. Вы можете выполнить этот этап, запустив функцию установки программы <[HTML_REMOVED]>, которая исполняет функцию src_install() сборочного файла:
ebuild путь/к/файлу-ebuild install
Помещение файлов в рабочую файловую систему
Последний этап — перенос всех файлов в рабочую файловую систему и их регистрация в системе Portage. В ebuild
этот этап называется qmerge и включает следующие действия:
- выполняется функция pkg_preinst(), если она определена
- все файлы копируются в рабочую файловую систему
- файлы регистрируются в системе Portage
- выполняется функция pkg_postinst(), если она определена
Запустите функцию qmerge программы ebuild
, чтобы выполнить этот этап:
ebuild путь/к/файлу-ebuild qmerge
Очистка временного каталога
Наконец, можно очистить временный каталог, используя команду clean программы ebuild
:
ebuild путь/к/файлу-ebuild clean
Дополнительные возможности Ebuild
Запуск всех команд установки
С помощью функции merge программы ebuild
можно за один раз запустить команды извлечения, распаковки, компиляции, установки и помещения:
ebuild путь/к/файлу-ebuild merge
Выполнение действий по настройке
В некоторых приложениях содержатся инструкции по дальнейшей настройке установленного пакета. Эти инструкции могут потребовать участия пользователя, и, следовательно, не выполняться автоматически. Для запуска шагов настройки, указанных в необязательной функции config() сборочного файла, используйте команду config программы ebuild
. Пример настройки пакета:
ebuild путь/к/файлу-ebuild config
Сборка пакета (RPM)
Вы можете попросить Portage создать двоичный пакет или даже RPM из вашего сборочного файла, воспользовавшись командами package и rpm соответственно. Эти команды несколько различаются:
- команда package во многом похожа на merge, выполняя все необходимые шаги (извлечение, распаковку, компиляцию, установку) перед созданием пакета
- команда rpm собирает пакет RPM из файлов созданных после запуска окончания функции install программы
ebuild
Пример создания пакетов:
cоздание двоичного пакета, совместимого с Portage:
ebuild путь/к/файлу-ebuild package
создание пакета RPM:
ebuild путь/к/файлу-ebuild rpm
Созданный RPM, однако, не будет содержать информацию о зависимостях из сборочного файла ebuild.
Дополнительная информация
За дополнительными сведениями о системе Portage, программе ebuild и сценариях ebuild обращайтесь к следующим страницам справки man:
man portage
- (сама система Portage)man emerge
- (команда emerge)man ebuild
- (команда ebuild)man 5 ebuild
- (синтаксис файлов ebuild)
Кроме того, дополнительные сведения, относящиеся к разработке, находятся в настольной книге разработчика.